package com.sparrow.source.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sparrow.source.common.dto.DeviceUserListRes;
import com.sparrow.source.common.dto.Result;
import com.sparrow.source.common.dto.UnvDeviceQueryRequest;
import com.sparrow.source.persistense.UnvDevice;

import java.util.List;

/**
 * @author bryceyung
 * @since 2024/11/19
 */
public interface IUnvDeviceService extends IService<UnvDevice> {

    /**
     * 新增设备
     *
     * @param device
     * @return
     */
    Boolean addDevice(UnvDevice device);

    /**
     * 同步设备信息
     *
     * @param deviceId
     * @return
     */
    UnvDevice sync(Integer deviceId);

    /**
     * 分页查询设备信息
     *
     * @param queryRequest
     * @param page
     * @return
     */
    IPage<UnvDevice> queryDevicePage(UnvDeviceQueryRequest queryRequest, Page<UnvDevice> page);

    /**
     * 向设备添加人员信息
     *
     * @param uids
     * @param deviceId
     * @return
     */
    Result addPersonInfo(Integer deviceId, List<Integer> uids);

    Result syncAllPersonInfo(Integer deviceId);

    /**
     * 获取设备详情信息
     *
     * @param deviceId
     * @return
     */
    UnvDevice getById(Integer deviceId);

    List<DeviceUserListRes> queryDeviceUserList(Integer deviceId);

    List<UnvDevice> queryOffLineDevices();

}
